$(function() {
    buttenControl();
    $('#tb_ads').bootstrapTable({
        method: 'GET',                      //请求方式（*）
        // url: 'list.json',         //请求后台的URL（*）
        url: projectPath + "/base/users/list",
        contentType: 'application/x-www-form-urlencoded',
        toolbar: '#toolbar',                //工具按钮用哪个容器
        striped: true,                      //是否显示行间隔色
        cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
        pagination: true,                   //是否显示分页（*）
        sortable: true,                     //是否启用排序
        sortOrder: "asc",                   //排序方式
        search:true,
        queryParams: userQueryParams,//传递参数（*）
        sidePagination: "client",           //分页方式：client客户端分页，server服务端分页（*）
        pageNumber: 1,                       //初始化加载第一页，默认第一页
        pageSize: 10,                       //每页的记录行数（*）
        pageList: [3, 10, 15],        //可供选择的每页的行数（*）
        strictSearch: false,
        clickToSelect: true,                //是否启用点击选中行
        uniqueId: "id",
        showColumns: true,                  //是否显示所有的列(右侧工具栏)
        showRefresh: true,                  //显示刷新按钮
        showToggle: true,
        minimumCountColumns: 2,             //最少允许的列数
        singleSelect:true,
        paginationPreText: "上一页",
        paginationNextText: "下一页",
        columns: [
            {field: 'check', checkbox: true},
            {field: '', title: '序号', align: 'center', formatter: function (value, row, index) {
                return index + 1;
            }},
            {field: 'uuid', title: '主键', align: 'center', visible:false},
            {field: 'fullname', title: '用户名称', sortable:true, align: 'center',formatter:function(value,row,index){
                return '<div style="white-space: nowrap;">'+value+'</div>';
            }},
            {field: 'loginname', title: '用户账号', sortable:true, align: 'center',formatter:function(value,row,index){
                return '<div style="white-space: nowrap;">'+value+'</div>';
            }},
            {field: 'nickname', title: '昵称', sortable:true, align: 'center',formatter:function(value,row,index){
                return '<div style="white-space: nowrap;">'+value+'</div>';
            }},
            {field: 'phone', title: '联系电话', sortable:true, align: 'center',formatter:function(value,row,index){
                return '<div style="white-space: nowrap;">'+value+'</div>';
            }},
            {field: 'createdat', title: '创建时间', sortable:true, align: 'center',formatter: function (value, row, index) {
                if(value == "" || value == null){
                    value="";
                }else{
                    value = getLocalTime(value);
                };
                return '<div style="white-space: nowrap;">'+value+'</div>';
            }},
        ],
        responseHandler: function (data) {
            return data.data;
            // return {
            //     total:data.totalNum,
            //     rows:data.dataList
            // }
        }
    });
    // 查询
    $("#btnQuery").click(function(){
        $('#tb_ads').bootstrapTable('refresh', {url:  projectPath + "/base/users/list"});
    });
    // 置空
    $("#btnEmpty").click(function () {
        $("#fullname").val("");
        $("#loginname").val("");
    });
});

function userQueryParams() {
    var filterinfo = {};
    if($("#fullname").val() != ""){
        filterinfo.fullname = $("#fullname").val().trim();
    };
    if($("#loginname").val() != ""){
        filterinfo.loginname = $("#loginname").val().trim();
    };
    return filterinfo;
};
// 删除
$("#btnDelete").on("click",function(){
    var ids = getSelectedDeleteParams();
    if (ids != '' && ids != null) {
        layerAlert.confirmMessage("确定要删除?",projectPath + "/base/users/del?uuid="+ids, function(data){
            if(data.code == "0"){
                layerAlert.successMessage("操作成功","");
            }else{
                layerAlert.errorMessage("操作失败");
            };
        });
    }else{
        layerAlert.errorMessage("您的选择为空");
    }
});

// 密码重置
$("#btnRevisePass").click(function () {
    updataPassword();
    var ids = getSelectedDeleteParams();
    if (ids != '' && ids != null){
        layer.open({
            type: 1,
            title: "修改密码",
            shadeClose: true,
            shade: 0.3,
            move :false,
            area: ['40%', '60%'],
            skin: 'layui-layer-rims',
            content: $(".revise_pass_dialog"),
            btn:['确定','取消'],
            yes:function(){
                var bootstrapValidator = $(".bootstrapValidatorPass").data('bootstrapValidator');
                bootstrapValidator.validate();
                if(!bootstrapValidator.isValid()){
                    layerAlert.errorMessage("请填写信息");
                    return;
                };
                layerAlert.confirmPassword("确定要密码?",projectPath + "/base/users/updatePassword?uuid=" + ids + "&oldPassword=" + $("#oldpassword").val() + "&password=" + $("#newpassword").val(), function(data){
                    if(data.code == "0"){
                        layerAlert.successMessage("重置成功","");
                    }else{
                        layerAlert.errorMessage("原密码错误");
                    };
                });
                $("#oldpassword").val("");
                $("#newpassword").val("");
                // 重置表单验证
                updataPassword();
                $(".bootstrapValidatorPass").data('bootstrapValidator').destroy();
                $('.bootstrapValidatorPass').data('bootstrapValidator', null);
            },
            cancel:function(){
                $("#oldpassword").val("");
                $("#newpassword").val("");
                // 重置表单验证
                updataPassword();
                $(".bootstrapValidatorPass").data('bootstrapValidator').destroy();
                $('.bootstrapValidatorPass').data('bootstrapValidator', null);
            },
            btn2:function(){
                $("#oldpassword").val("");
                $("#newpassword").val("");
                // 重置表单验证
                updataPassword();
                $(".bootstrapValidatorPass").data('bootstrapValidator').destroy();
                $('.bootstrapValidatorPass').data('bootstrapValidator', null);
            }
        });
    }else{
        layerAlert.errorMessage("您的选择为空");
    };
});


// 后台验证用户账号是否被占用
 $("#loginName").on("change",function () {
     $.ajax({
         url: projectPath + '/base/users/qryUserByLongname?loginname=' + $("#loginName").val(),
         type: 'POST',
         dataType: 'json',
         success:function (data) {
             if(data.data != null){
                 layerAlert.warnMessage("该账号已占用,请重新输入");
                 $("#loginName").val("");
             }
         },
         error:function () {
             layerAlert.errorMessage("数据错误！");
         }
     });
 })



// 新增
$("#btnAdd").on("click",function () {
    $(".oldPassword").show();
    // 验证
    formValidator();
    $('#roleJsTree').jstree("destroy");
    var datastring = "";
    $("#roleJsTree").data('jstree', false).empty().jstree({
        ui : {
            theme_name : "checkbox"
        },
        core:{
            'check_callback' : true,
            'data' : function (obj, callback) {
                $.ajax({
                    type: "GET",
                    url:projectPath+'/base/roles/listall',
                    async:false,
                    dataType:"json",
                    success:function(objdata) {
                        var result = objdata.data;
                        if(result){
                            var jsonArr = [];
                            $.each(result,function (index,item) {
                                var jsona = {
                                    id:item.uuid,
                                    text:item.rolename,
                                    // parent:item.prorgCode==item.prorgCode?"#":item.orgno,
                                    state:{seleted:false}
                                };
                                jsonArr.push(jsona);
                            });
                            callback.call(this,jsonArr);
                        }else{
                            $("#roleJsTree").html("无数据！");
                        }
                    },
                    error:function () {
                        layerAlert.errorMessage("不好意思，数据出错啦！");
                    }
                });
            },
            "multiple": true
        },
        types : {
            "default" : {
                "icon" : "glyphicon glyphicon-wrench"
            },
            "ptnode" : {
                "icon" : "glyphicon glyphicon-th"
            }
        },
        "plugins" : [
            "checkbox",
            "contextmenu",
            "massload",
            "search",
            "sort",
            "types",
            "wholerow",
            "changed",
            "conditionalselect"
        ]
    }).on('changed.jstree', function (event, data) {  //绑定的点击事件
        if(data.node && data.node.text){
            text = data.node.text; // 名称
            id = data.node.id; // 当前所选id
            datastring += ','+ id ;
            datastring = datastring.substr(1);
        }
    });
    layer.open({
        type: 1,
        title: "新建用户",
        shadeClose: true,
        shade: 0.3,
        move :false,
        area: ['60%', '70%'],
        skin: 'layui-layer-rims',
        content: $(".addUser"),
        closeBtn:1,
        shadeClose:false,
        btn:['确定','关闭'],
        yes:function(){
            var bootstrapValidator = $(".bootstrapValidators").data('bootstrapValidator');
            bootstrapValidator.validate();
            if(!bootstrapValidator.isValid()){
                layerAlert.warnMessage("请填写信息");
                return;
            };
            var dataParams = {
                fullname: $("#fullName").val(), // 用户名称
                loginname: $("#loginName").val(), // 用户胡账号
                password: $("#oldPassword").val(), // 密码
                phone: $("#linkPhoen").val(), // 联系电话
                roleUuids:datastring,
            };
            if(dataParams.loginname == ''){
                layerAlert.warnMessage("请填写用户账号");
                return;
            }
            $.ajax({
                url: projectPath + '/base/users/insertUser',
                type: 'POST',
                dataType: 'json',
                data: dataParams,
                success:function(data){
                    if(data.code == "0"){
                        layerAlert.successMessage("添加成功","");
                    }else{
                        layerAlert.errorMessage("添加失败");
                    }
                },
                error:function(){
                    layerAlert.errorMessage("错误");
                }
            });
            datastring = "";
            $("#fullName").val("");
            $("#loginName").val("");
            $("#oldPassword").val("");
            $("#linkPhoen").val("");
            $('#roleJsTree').jstree("destroy");

            // 重置表单验证
            formValidator();
            $(".bootstrapValidators").data('bootstrapValidator').destroy();
            $('.bootstrapValidators').data('bootstrapValidator', null);
        },
        btn2:function(){
            datastring = "";
            $("#fullName").val("");
            $("#loginName").val("");
            $("#oldPassword").val("");
            $("#linkPhoen").val("");
            //$.jstree.destroy ();
            $('#roleJsTree').jstree("destroy");

            // 重置表单验证
            formValidator();
            $(".bootstrapValidators").data('bootstrapValidator').destroy();
            $('.bootstrapValidators').data('bootstrapValidator', null);
        },
        cancel:function(){
            datastring = "";
            $("#storInput").val("");
            $("#fullName").val("");
            $("#loginName").val("");
            $("#oldPassword").val("");
            $("#linkPhoen").val("");
            // $.jstree.destroy ();
            $('#roleJsTree').jstree("destroy");

            // 重置表单验证
            formValidator();
            $(".bootstrapValidators").data('bootstrapValidator').destroy();
            $('.bootstrapValidators').data('bootstrapValidator', null);
        }
    });
});

// 修改
$("#brnRevise").click(function(){
    $(".oldPassword").hide();
    formValidator();
    var ids = getSelectedDeleteParams();
    var datastring = "";
    // 基本信息回显
    $.ajax({
        url: projectPath + '/base/users/detail?uuid=' + ids,
        type: 'POST',
        dataType: 'json',
        success:function (data) {
            result = data.data;
            $("#fullName").val(result.fullname);
            $("#loginName").val(result.loginname);
            $("#oldPassword").val(result.password);
            $("#linkPhoen").val(result.phone);
        },
        error:function () {
            layerAlert.errorMessage("错误");
        }
    });
    // 所属角色回显
    $("#roleJsTree").data('jstree', false).empty().jstree({
        ui : {
            theme_name : "checkbox"
        },
        core:{
            'check_callback' : true,
            'data' : function (obj, callback) {
                $.ajax({
                    type: "GET",
                    url:projectPath+'/base/roles/listall',
                    async:false,
                    dataType:"json",
                    success:function(objdata) {
                        var result = objdata.data;
                        if(result){
                            var jsonArr = [];
                            $.each(result,function (index,item) {
                                var jsona = {
                                    id:item.uuid,
                                    text:item.rolename,
                                    // parent:item.prorgCode==item.prorgCode?"#":item.orgno,
                                };
                                jsonArr.push(jsona);
                            });
                            callback.call(this,jsonArr);
                        }else{
                            $("#roleJsTree").html("无数据！");
                        }
                    },
                    error:function () {
                        layerAlert.errorMessage("不好意思，数据出错啦！");
                    }
                });
            },
            "multiple": true
        },
        types : {
            "default" : {
                "icon" : "glyphicon glyphicon-wrench"
            },
            "ptnode" : {
                "icon" : "glyphicon glyphicon-th"
            }
        },
        "plugins" : [
            "checkbox",
            "contextmenu",
            "massload",
            "search",
            "sort",
            "types",
            "wholerow",
            "changed",
            "conditionalselect"
        ]
    }).on('loaded.jstree', function(e, data){
        $.ajax({
            url:projectPath+'/base/roles/qryByUserUuid?uuid='+ids,
            type: 'POST',
            dataType: 'json',
            success:function (data) {
                for(var index in data.data){
                    $('#roleJsTree').jstree('select_node',data.data[index].uuid,true);
                }
            },
            error:function (data) {
                layerAlert.errorMessage("网路异常");
            }
        });
    });
    if (ids != '' && ids != null) {
        layer.open({
            type: 1,
            title: "修改用户",
            shadeClose: true,
            shade: 0.3,
            move :false,
            area: ['60%', '70%'],
            skin: 'layui-layer-rims',
            content: $(".addUser"),
            closeBtn:1,
            shadeClose:false,
            btn:['确定','关闭'],
            yes:function(){
                var bootstrapValidator = $(".bootstrapValidators").data('bootstrapValidator');
                bootstrapValidator.validate();
                if(!bootstrapValidator.isValid()){
                    layerAlert.warnMessage("请填写信息");
                    return;
                };
                var ref = $('#roleJsTree').jstree(true).get_selected();//获得所有选中节点，返回值为数组
                var dataParams = {
                    fullname: $("#fullName").val(), // 用户名称
                    loginname: $("#loginName").val(), // 用户胡账号
                    oldPassword: $("#oldPassword").val(), // 密码
                    phone: $("#linkPhoen").val(), // 联系电话
                    password:$("#newPassword").val(),
                    roleUuids:ref.join(','),
                    uuid:ids
                };
                if(dataParams.loginname == ''){
                    layerAlert.warnMessage("请填写用户账号");
                    return;
                }
                $.ajax({
                    url: projectPath + '/base/users/update',
                    type: 'POST',
                    dataType: 'json',
                    data: dataParams,
                    success:function(data){
                        if(data.code == "0"){
                            layerAlert.successMessage("修改成功","");
                        }else{
                            layerAlert.errorMessage("修改失败");
                        }
                    },
                    error:function () {
                        layerAlert.errorMessage("错误");
                    }
                });
                datastring = "";
                $("#fullName").val("");
                $("#loginName").val("");
                $("#oldPassword").val("");
                $("#linkPhoen").val("");
                $("#newPassword").val("");

                $('#roleJsTree').jstree("destroy");

                // 重置表单验证
                formValidator();
                $(".bootstrapValidators").data('bootstrapValidator').destroy();
                $('.bootstrapValidators').data('bootstrapValidator', null);
            },
            btn2:function () {
                datastring = "";
                $("#fullName").val("");
                $("#loginName").val("");
                $("#oldPassword").val("");
                $("#linkPhoen").val("");
                $("#newPassword").val("");

                $('#roleJsTree').jstree("destroy");

                // 重置表单验证
                formValidator();
                $(".bootstrapValidators").data('bootstrapValidator').destroy();
                $('.bootstrapValidators').data('bootstrapValidator', null);
            },
            cancel:function () {
                datastring = "";
                $("#fullName").val("");
                $("#loginName").val("");
                $("#oldPassword").val("");
                $("#linkPhoen").val("");
                $("#newPassword").val("");
                $('#roleJsTree').jstree("destroy");

                // 重置表单验证
                formValidator();
                $(".bootstrapValidators").data('bootstrapValidator').destroy();
                $('.bootstrapValidators').data('bootstrapValidator', null);
            }
        });
    } else {
        layerAlert.errorMessage("您的选择为空");
    }
});


// 新增修改提交验证
function formValidator(){
    $(".bootstrapValidators").bootstrapValidator({
        message: 'This value is not valid',
        feedbackIcons: {
            //valid: 'glyphicon glyphicon-ok',
            //invalid: 'glyphicon glyphicon-remove',
            //validating: 'glyphicon glyphicon-refresh'
        },
        fields:{
            fullName:{
                validators:{
                    notEmpty: {
                        message: '请填写用户名称'
                    },
                },
            },
            loginName:{
                validators:{
                    notEmpty: {
                        message: '请填写用户账号'
                    },
                },
            },
            linkPhoen:{
                validators:{
                    notEmpty: {
                        message: '请填写联系电话'
                    },
                    stringlength:{
                        min:11,
                        max:11,
                        message:'请输入11位手机号码'
                    },
                    regexp: {
                        regexp: "^1[0-9]{10}$",
                        message: '手机号码格式错误'
                    }
                },
            },
            oldPassword:{
                validators:{
                    notEmpty: {
                        message: '请填写初始密码'
                    }
                },
            }
        }
    });
};

// 修改密码验证
function updataPassword(){
    $(".bootstrapValidatorPass").bootstrapValidator({
        message: 'This value is not valid',
        feedbackIcons: {
            //valid: 'glyphicon glyphicon-ok',
            //invalid: 'glyphicon glyphicon-remove',
            //validating: 'glyphicon glyphicon-refresh'
        },
        fields:{
            oldpassword:{
                validators:{
                    notEmpty: {
                        message: '请填写原密码'
                    }
                },
            },
            newpassword: {
                validators: {
                    notEmpty: {
                        message: '请填写修改密码'
                    },
                    callback:{
                        message: '不能与原始密码重复',
                        callback: function check(value, validator,$field){
                            if(value === $("#oldpassword").val()){
                                return false;
                            }
                            return true;
                        }
                    }
                }
            },
            repeatpassword:{
                validators: {
                    identical: {
                        field: 'newpassword',
                        message: '用户新密码与确认密码不一致！'
                    },
                    notEmpty: {
                        message: '确认密码不能为空'
                    },
                }
            },
        }
    });
};

/**
 * zhangYiHang 18.3.20
 * 页面按钮控制
 * @constructor
 */
function buttenControl() {
    var urls = paramUrlByButten();
    if(urls.length>0){
        for (var i in urls){
            if('update' == urls[i]){
                $("#brnRevise").show();
            } else if('insert' == urls[i]){
                $("#btnAdd").show();
            }else if('delete' == urls[i]){
                $("#btnDelete").show()
            }else if('updatePassword' == urls[i]){
                $("#btnRevisePass").show()
            }
        }
    }
}